﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Timers;

namespace KATAJAVI_SIA
{
    public partial class KATAJAVI : Form
    {
        DataClassesDataContext BEDE = new DataClassesDataContext();
        IEnumerable<MECANICO> lista1;
        IEnumerable<CLIENTE> lista2;
        IEnumerable<ATENCION> lista3;
        IEnumerable<MOTO> lista4;
        public string pasar;

        public KATAJAVI()
        {
            InitializeComponent();
        }

        //=================================================================================================================================================

        public int ValidarEliminacionMoto(string idmoto)
        {
            lista3 = BEDE.ATENCION.Where(a => a.softdelete == 1);
            foreach (ATENCION aux in lista3)
            {
                if (aux.id_motocicleta == int.Parse(idmoto)) { return 0; }
            }
            return 1;
        }

        //=================================================================================================================================================

        public int ValidarEliminacionCliente(string rut)
        {
            int a = 0;  // CUENTA TODAS LAS MOTOCICLETAS ASOCIADAS AL CLIENTE
            int b = 0;  // CUENTA TODAS LAS MOTOCICLETAS ASOCIADAS, SIN ATENCIONES ACTIVAS
            lista4 = BEDE.MOTO.Where(c => c.softdelete == 1);
            foreach (MOTO aux in lista4)
            {
                if (aux.rut_cliente == int.Parse(rut))
                {
                    int rev = ValidarEliminacionMoto(aux.id_motocicleta.ToString());
                    if (rev == 1) { b++; } // SE ENCONTRO UNA MOTO SIN ATENCIONES PENDIENTES
                    a++;    // SE ENCONTRO UNA NUEVA MOTO
                }
            }
            if (a == 0) { return 2; } // EL CLIENTE NO TIENE MOTOS ASOCIADAS
            else                    // EL CLIENTE SI TIENE MOTOS ASOCIADAS
            {
                if (a == b) { return 1; }  // SI LAS MOTOCICLETAS NO TIENEN ATENCIONES ASOCIADAS, ENTONCES SE ELIMINAN LAS MOTOS TAMBIEN
                else { return 0; }         // SI EL CLIENTE TIENE MOTOS QUE ESTAN SIENDO ATENDIDAS, NO SE PUEDE ELIMINAR NADA.
            }
        }

        //=================================================================================================================================================

        public int ValidarPatente(string patente)
        {
            if (patente.Length < 5) { return 0; }
            else
            {
                int prb = 1;
                int d;
                for (d = 0; d <= 4; d++)
                {
                    if (d <= 1)
                    {
                        int a = new int();
                        a = patente[d];
                        if (a < 65 | a > 90) { prb = prb * 0; }
                    }
                    if (d > 1)
                    {
                        int a = new int();
                        a = patente[d];
                        if (a < 48 | a > 57) { prb = prb * 0; }
                    }

                }
                return prb;
            }
        }

        //================================================================================================================================================

        public int ValidarCombobox(string cbtext)
        {
            if (cbtext == "") { return 0; }
            else { return 1; }
        }

        //================================================================================================================================================

        public int ValidarRut(string rutt, string digito)
        {
            if (rutt == "" | digito == "") { return 0; }
            else
            {
                int a = ValidarNumeros(rutt);
                if (a == 1 && (digito == "0" | digito == "1" | digito == "2" | digito == "3" | digito == "4" | digito == "5" | digito == "6" | digito == "7" | digito == "8" | digito == "9" | digito == "K"))
                {
                    int rut = int.Parse(rutt);
                    int mult = 2;
                    int acumdig = 0;
                    while (rut != 0)
                    {
                        int mod = rut % 10;
                        rut = rut / 10;
                        acumdig = acumdig + (mod * mult);
                        mult++;
                        if (mult > 7)
                        {
                            mult = 2;
                        }
                    }
                    int div = acumdig % 11;
                    int dig = 11 - div;
                    if (digito == "0")
                    {
                        if (dig == 11) { return 1; }
                        else { return 0; }
                    }
                    else
                    {
                        if (digito == "K")
                        {
                            if (dig == 10) { return 1; }
                            else { return 0; }
                        }
                        else
                        {
                            if (digito == dig.ToString()) { return 1; }
                            else { return 0; }
                        }
                    }
                }
                else { return 0; }
            }
        }

        //=================================================================================================================================================

        public int ValidarTextos(string texto)
        {
            if (texto != "")
            {
                int sw = 1;
                foreach (char aux in texto.ToCharArray())
                {
                    int aux2 = (int)aux;
                    if (aux2 != 32)
                    {
                        if (aux2 < 65 | aux2 > 90) // COMPRUEBA SI EL CARACTER ESTA ENTRE LA "A" Y LA "Z"
                        {
                            sw = sw * 0;
                        }
                        else { sw = sw * 1; }
                    }
                }
                return sw;
            }
            else { return 0; }

        }

        //=================================================================================================================================================

        public int ValidarNumeros(string numero)
        {
            try
            {
                Convert.ToInt32(numero);
                return 1;
            }
            catch { return 0; }
        }

        //=================================================================================================================================================

        public int ValidarFono(string fono)
        {
            int aux3 = 0;
            int aux = ValidarNumeros(fono); // el valor solo contiene numeros
            int aux2;
            if (fono.Length < 8) { aux2 = 0; } // el valor esta compuesto por 8 digitos
            else { aux2 = 1; }
            if (aux == 1 && aux2 == 1)
            {
                int a = int.Parse(fono);
                int b = a / 10000000;
                if (b == 9 | b == 8 | b == 7 | b == 2 | b == 6) { aux3 = 1; }
            }
            return aux * aux2 * aux3;

        }

        //=================================================================================================================================================

        public int BuscarEnGrid(string ValorBuscado, DataGridView grid)
        {
            if (grid.RowCount == 0)
            {
                return 0;
            }
            else
            {
                grid.ClearSelection();
                int i = 0;
                foreach (DataGridViewRow row in grid.Rows)
                {
                    foreach (DataGridViewCell cell in row.Cells)
                    {
                        try
                        {
                            if (cell.Value.ToString() == ValorBuscado)
                            {

                                grid.Rows[i].Selected = true;
                                grid.CurrentCell = grid.Rows[i].Cells[0];
                                return 1;
                            }
                        }
                        catch { }
                    }
                    i++;
                }
                return 0;
            }
        }

        //=================================================================================================================================================

        public int ValidarClaveMecanico(int rut, int clave)
        {
            lista1 = BEDE.MECANICO.Where(a => a.softdelete == 1);
            foreach (MECANICO aa in lista1)
            {
                if (aa.rut_mecanico == rut)
                {
                    if (aa.clave == clave) { return 1; }
                    else { return 0; }
                }
            }
            return 0;
        }

        //=================================================================================================================================================

        public int GenIDAtencion()
        {
            int a = 10000000;
            lista3 = BEDE.ATENCION;
            foreach (ATENCION aux in lista3)
            {
                a++;
            }
            return a;
        }

        //=================================================================================================================================================

        public int GenIDMoto(string pat)
        {
            int aux = 0;
                pat = pat.Replace("A", "01");
                pat = pat.Replace("B", "02");
                pat = pat.Replace("C", "03");
                pat = pat.Replace("D", "04");
                pat = pat.Replace("E", "05");
                pat = pat.Replace("F", "06");
                pat = pat.Replace("G", "07");
                pat = pat.Replace("H", "08");
                pat = pat.Replace("I", "09");
                pat = pat.Replace("J", "10");
                pat = pat.Replace("K", "11");
                pat = pat.Replace("L", "12");
                pat = pat.Replace("M", "13");
                pat = pat.Replace("N", "14");
                pat = pat.Replace("Ñ", "15");
                pat = pat.Replace("O", "16");
                pat = pat.Replace("P", "17");
                pat = pat.Replace("Q", "18");
                pat = pat.Replace("R", "19");
                pat = pat.Replace("S", "20");
                pat = pat.Replace("T", "21");
                pat = pat.Replace("U", "22");
                pat = pat.Replace("V", "23");
                pat = pat.Replace("W", "24");
                pat = pat.Replace("X", "25");
                pat = pat.Replace("Y", "26");
                pat = pat.Replace("Z", "27");
                aux = int.Parse(pat);
            return aux;
        }

        //=================================================================================================================================================

        public int ComprobarAtencion(string patente)
        {
            int id = GenIDMoto(patente);
            lista3 = BEDE.ATENCION.Where(a => a.softdelete == 1);
            foreach (ATENCION aux in lista3)
            {
                if (aux.id_motocicleta == id)
                {
                    if (aux.estado_atencion != 4) { return 1; }
                }
            }
            return 0;
        }

        //=================================================================================================================================================

        public int ComprobarDueño(string rut, string nombre)
        {
            lista2 = BEDE.CLIENTE;
            foreach (CLIENTE aux in lista2)
            {
                if (aux.rut_cliente == int.Parse(rut))
                {
                    if (aux.softdelete == 0) { return 3; }
                    else { return 1; }
                }
                if (nombre != "")
                {
                    if (aux.nombre == nombre)
                    {
                        if (aux.softdelete == 0) { return 4; }
                        else { return 2; }
                    }
                }
            }
            return 0;
        }

        //=================================================================================================================================================

        public int ComprobarMoto(string patente)
        {
            lista4 = BEDE.MOTO;
            int id = GenIDMoto(patente);
            foreach (MOTO aux in lista4)
            {
                if (aux.id_motocicleta == id)
                {
                    if (aux.softdelete == 0) { return 2; }
                    else { return 1; }
                }
            }
            return 0;
        }

        //=================================================================================================================================================

        private void Form1_Load(object sender, EventArgs e)
        {
            pnl_Principal.Controls.Clear();
            Entrada inicio = new Entrada();
            inicio.TopLevel = false;
            inicio.Parent = pnl_Principal;
            inicio.Show();
        }

        private void btn_AgregarUsuario_Click(object sender, EventArgs e)
        {
            pnl_Principal.Controls.Clear();
            AgregarClientes AgregarUsuario = new AgregarClientes();
            AgregarUsuario.TopLevel = false;
            AgregarUsuario.Parent = pnl_Principal;
            AgregarUsuario.Show();
        }

        private void btn_ConsultarUsuarios_Click(object sender, EventArgs e)
        {
            pnl_Principal.Controls.Clear();
            ConsultarClientes VerUsuarios = new ConsultarClientes();
            VerUsuarios.TopLevel = false;
            VerUsuarios.Parent = pnl_Principal;
            VerUsuarios.Show();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            pnl_Principal.Controls.Clear();
            EditarClientes EditarClien = new EditarClientes();
            EditarClien.TopLevel = false;
            EditarClien.Parent = pnl_Principal;
            EditarClien.Show();
        }

        private void button1_Click_1(object sender, EventArgs e)
        {
            pnl_Principal.Controls.Clear();
            EditarAtenciones EditarAten = new EditarAtenciones();
            EditarAten.TopLevel = false;
            EditarAten.Parent = pnl_Principal;
            EditarAten.Show();
        }

        private void btn_RegistrarMoto_Click(object sender, EventArgs e)
        {
            pnl_Principal.Controls.Clear();
            AgregarMotos AgregarMoto = new AgregarMotos();
            AgregarMoto.TopLevel = false;
            AgregarMoto.Parent = pnl_Principal;
            AgregarMoto.Show();
        }

        private void button5_Click(object sender, EventArgs e)
        {
            pnl_Principal.Controls.Clear();
            AgregarAtencion AgregarAten = new AgregarAtencion();
            AgregarAten.TopLevel = false;
            AgregarAten.Parent = pnl_Principal;
            AgregarAten.Show();
        }

        private void btn_ConsultarMotos_Click(object sender, EventArgs e)
        {
            pnl_Principal.Controls.Clear();
            ConsultarMotos ConsultarMot = new ConsultarMotos();
            ConsultarMot.TopLevel = false;
            ConsultarMot.Parent = pnl_Principal;
            ConsultarMot.Show();
        }

        private void button4_Click(object sender, EventArgs e)
        {
            pnl_Principal.Controls.Clear();
            ConsultarAtenciones ConsultarAten = new ConsultarAtenciones();
            ConsultarAten.TopLevel = false;
            ConsultarAten.Parent = pnl_Principal;
            ConsultarAten.Show();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            pnl_Principal.Controls.Clear();
            EditarMotos EditarClien = new EditarMotos();
            EditarClien.TopLevel = false;
            EditarClien.Parent = pnl_Principal;
            EditarClien.Show();
        }

        private void salirToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("¿Esta seguro que desea salir del sistema?.", "SALIENDO DEL SISTEMA.", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                Application.Exit();
            }
        }

        private void salirToolStripMenuItem_Click(object sender, EventArgs e)
        {
            pnl_Principal.Controls.Clear();
            Entrada inicio = new Entrada();
            inicio.TopLevel = false;
            inicio.Parent = pnl_Principal;
            inicio.Show();
        }

        private void gestionDeAdministradorToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ValidarAdmin a = new ValidarAdmin();
            a.Show();
        }

        private void clienteToolStripMenuItem_Click(object sender, EventArgs e)
        {
            pnl_Principal.Controls.Clear();
            AgregarClientes AgregarUsuario = new AgregarClientes();
            AgregarUsuario.TopLevel = false;
            AgregarUsuario.Parent = pnl_Principal;
            AgregarUsuario.Show();
        }

        private void motocicletaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            pnl_Principal.Controls.Clear();
            AgregarMotos AgregarMoto = new AgregarMotos();
            AgregarMoto.TopLevel = false;
            AgregarMoto.Parent = pnl_Principal;
            AgregarMoto.Show();
        }

        private void atencionToolStripMenuItem_Click(object sender, EventArgs e)
        {
            pnl_Principal.Controls.Clear();
            AgregarAtencion AgregarAten = new AgregarAtencion();
            AgregarAten.TopLevel = false;
            AgregarAten.Parent = pnl_Principal;
            AgregarAten.Show();
        }

        private void atencionesToolStripMenuItem_Click(object sender, EventArgs e)
        {
            pnl_Principal.Controls.Clear();
            ConsultarAtenciones ConsultarAten = new ConsultarAtenciones();
            ConsultarAten.TopLevel = false;
            ConsultarAten.Parent = pnl_Principal;
            ConsultarAten.Show();
        }

        private void clientesToolStripMenuItem_Click(object sender, EventArgs e)
        {
            pnl_Principal.Controls.Clear();
            ConsultarClientes VerUsuarios = new ConsultarClientes();
            VerUsuarios.TopLevel = false;
            VerUsuarios.Parent = pnl_Principal;
            VerUsuarios.Show();
        }

        private void motocicletasToolStripMenuItem_Click(object sender, EventArgs e)
        {
            pnl_Principal.Controls.Clear();
            ConsultarMotos ConsultarMot = new ConsultarMotos();
            ConsultarMot.TopLevel = false;
            ConsultarMot.Parent = pnl_Principal;
            ConsultarMot.Show();
        }

        private void clientesToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            pnl_Principal.Controls.Clear();
            EditarClientes EditarClien = new EditarClientes();
            EditarClien.TopLevel = false;
            EditarClien.Parent = pnl_Principal;
            EditarClien.Show();
        }

        private void motocicletasToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            pnl_Principal.Controls.Clear();
            EditarMotos EditarClien = new EditarMotos();
            EditarClien.TopLevel = false;
            EditarClien.Parent = pnl_Principal;
            EditarClien.Show();
        }

        private void atencionesToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            pnl_Principal.Controls.Clear();
            EditarAtenciones EditarAten = new EditarAtenciones();
            EditarAten.TopLevel = false;
            EditarAten.Parent = pnl_Principal;
            EditarAten.Show();
        }

        private void acercaDeToolStripMenuItem_Click(object sender, EventArgs e)
        {
            AcercaDe nuevo = new AcercaDe();
            nuevo.Show();
        }


    }
}
